#ifndef __LT3LCG_H
#define __LT3LCG_H

#include <cconfigoption.h>
#include <crng.h>

class LT3LCG : public cRNG {

private:
	double seed;
	double multiplier;
	double additive;
	double module;
	double currentX;

public:
	~LT3LCG() {};
	virtual void initialize(int seedSet, int rngId,  int numRngs, int parsimProcId, int parsimNumPartitions, cConfiguration *cfg);
	virtual unsigned long numbersDrawn();
	virtual void selfTest();
	virtual unsigned long intRand();
	virtual double doubleRand();
	virtual unsigned long intRand(unsigned long n);
	virtual unsigned long intRandMax();
	virtual double doubleRandNonz();
	virtual double doubleRandIncl1();
	virtual double doubleRandNonzIncl1();
};

#endif
